package com.battery.system.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.battery.common.annotation.Excel;
import com.battery.common.core.domain.BaseEntity;

import javax.persistence.Table;

/**
 * 提现记录对象 withdrawal
 *
 * @author battery
 * @date 2021-03-18
 */
@Table(name = "withdrawal")
public class Withdrawal extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 提现记录id
     */
    private String id;

    /**
     * 提现用户
     */
    @Excel(name = "提现用户")
    private String proxyUserId;

    /**
     * 提现方式
     */
    @Excel(name = "提现方式")
    private Integer type;

    /**
     * 申请提现金额
     */
    @Excel(name = "申请提现金额")
    private BigDecimal applyAmount;

    /**
     * 申请提现金额
     */
    @Excel(name = "实际到账金额")
    private BigDecimal amount;

    /**
     * 提现手续费
     */
    @Excel(name = "提现手续费")
    private BigDecimal poundage;

    private String trueName;

    public String getTrueName() {
        return trueName;
    }

    public void setTrueName(String trueName) {
        this.trueName = trueName;
    }

    /**
     * 申请时间
     */
    @Excel(name = "申请时间", width = 30)
    private Date applyTime;

    /**
     * 账号类型 1 平台 2 合作商 3 商户
     */
    @Excel(name = "账号类型 1 平台 2 合作商 3 商户")
    private Integer accountType;

    /**
     * 账号对应的ID
     */
    @Excel(name = "账号对应的ID")
    private String accountId;

    /**
     * 状态1、未审核，2、已通过，3、提现成功，4、提现失败，5、已拒绝
     */
    @Excel(name = "状态1、未审核，2、已通过，3、提现成功，4、提现失败，5、已拒绝")
    private Integer status;


    // 商户企业付款单号
    private String partnerTradeNo;


    // 企业付款成功，返回的微信付款单号
    private String paymentNo;


    private Date refuseTime;

    private Date passTime;

    private Date txArrivalTime;

    private Date txRequestTime;

    private String orderId;

    private String payFundOrderId;

    // 是否提现小程序
    private Integer isMinTx;

    /*
    提现失败是否退回
     */
    private Integer isReturn;

    public Integer getIsReturn() {
        return isReturn;
    }

    public void setIsReturn(Integer isReturn) {
        this.isReturn = isReturn;
    }

    public Integer getIsMinTx() {
        return isMinTx;
    }

    public void setIsMinTx(Integer isMinTx) {
        this.isMinTx = isMinTx;
    }

    public String getOrderId() {
        return orderId;
    }

    public void setOrderId(String orderId) {
        this.orderId = orderId;
    }

    public String getPayFundOrderId() {
        return payFundOrderId;
    }

    public void setPayFundOrderId(String payFundOrderId) {
        this.payFundOrderId = payFundOrderId;
    }

    public Date getRefuseTime() {
        return refuseTime;
    }

    public void setRefuseTime(Date refuseTime) {
        this.refuseTime = refuseTime;
    }

    public Date getPassTime() {
        return passTime;
    }

    public void setPassTime(Date passTime) {
        this.passTime = passTime;
    }

    public Date getTxArrivalTime() {
        return txArrivalTime;
    }

    public void setTxArrivalTime(Date txArrivalTime) {
        this.txArrivalTime = txArrivalTime;
    }

    public Date getTxRequestTime() {
        return txRequestTime;
    }

    public void setTxRequestTime(Date txRequestTime) {
        this.txRequestTime = txRequestTime;
    }

    public String getPartnerTradeNo() {
        return partnerTradeNo;
    }

    public void setPartnerTradeNo(String partnerTradeNo) {
        this.partnerTradeNo = partnerTradeNo;
    }

    public String getPaymentNo() {
        return paymentNo;
    }

    public void setPaymentNo(String paymentNo) {
        this.paymentNo = paymentNo;
    }

    public BigDecimal getApplyAmount() {
        return applyAmount;
    }

    public void setApplyAmount(BigDecimal applyAmount) {
        this.applyAmount = applyAmount;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    public void setProxyUserId(String proxyUserId) {
        this.proxyUserId = proxyUserId;
    }

    public String getProxyUserId() {
        return proxyUserId;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getType() {
        return type;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setPoundage(BigDecimal poundage) {
        this.poundage = poundage;
    }

    public BigDecimal getPoundage() {
        return poundage;
    }

    public void setApplyTime(Date applyTime) {
        this.applyTime = applyTime;
    }

    public Date getApplyTime() {
        return applyTime;
    }

    public void setAccountType(Integer accountType) {
        this.accountType = accountType;
    }

    public Integer getAccountType() {
        return accountType;
    }

    public void setAccountId(String accountId) {
        this.accountId = accountId;
    }

    public String getAccountId() {
        return accountId;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getStatus() {
        return status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("proxyUserId", getProxyUserId())
                .append("type", getType())
                .append("amount", getAmount())
                .append("poundage", getPoundage())
                .append("applyTime", getApplyTime())
                .append("accountType", getAccountType())
                .append("accountId", getAccountId())
                .append("status", getStatus())
                .append("remark", getRemark())
                .toString();
    }
}
